package com.kj.tms.system.controller.syswelcome;


import com.kj.tms.common.bean.dto.Pager;
import com.kj.tms.common.bean.dto.ReturnData;
import com.kj.tms.common.utils.constant.Consts;
import com.kj.tms.pri.system.menu.service.AssignPermissionService;
import com.kj.tms.pri.system.role.dto.RoleDto;
import com.kj.tms.pri.system.user.dto.UserDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.HashMap;
import java.util.Map;

/**
 * @ProjectName: tms
 * @Package: com.hongtu.tms.system.controller.permission
 * @ClassName: AssignPermissionController
 * @Description: [用户权限管理Controller层]
 * @Author: 王国庆
 * @CreateDate: 2017/11/8 17:01
 * @UpdateUser: [修改者姓名]
 * @UpdateDate: 2017/11/8 17:01
 * @UpdateRemark: [修改原因备注]
 * @Version: 1.0
 * Copyright: 北京宏图天安 Copyright (c) 2017
 */
@RestController
@RequestMapping("/system/assignPermission")
public class AssignPermissionController {


    @Autowired
    private AssignPermissionService assignPermissionServiceImpl;


    /**
     * @return ModelAndView 返回类型
     * @throws Exception
     * @method [toAssignPermissionForUser]
     * @description [人员权限分配主界面]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 16:51
     */
    @RequestMapping("/toAssignPermissionPersonal")
    public ModelAndView toAssignPermissionForUser() throws Exception {
        ModelAndView mv = new ModelAndView("system/permission/assign_permission_personal");
        return mv;
    }

    /**
     * @return ModelAndView 返回类型
     * @throws Exception
     * @method [toAddRoleByOrgPersonal]
     * @description [新增机构人员角色分配]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 16:54
     */
    @RequestMapping("/toAddRoleByOrgPersonal")
    public ModelAndView toAddRoleByOrgPersonal() throws Exception {
        ModelAndView mv = new ModelAndView("system/permission/add_role_org_personal");
        return mv;
    }

    /**
     * @return ModelAndView 返回类型
     * @throws Exception
     * @method [toAddOrganizationPersonnel]
     * @description [新增机构人员分配]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 16:55
     */
    @RequestMapping("/toAddOrganizationPersonnel")
    public ModelAndView toAddOrganizationPersonnel() throws Exception {
        ModelAndView mv = new ModelAndView("system/permission/add_organization_personnel");
        return mv;
    }
//
//    /**
//     * @param userDto
//     * @param orgCode
//     * @return void 返回类型
//     * @throws
//     * @method [listOrgByPage]
//     * @description [查询用户权限管理机构下的人员信息分页数据]
//     * @author 王国庆
//     * @version 1.0
//     * @date 2017年11月08日 16:55
//     */
//    @RequestMapping("/listOrgByPage")
//    @ResponseBody
//    public ReturnData listOrgByPage(UserDto userDto,
//                             @RequestParam(value = "orgCode", required = false) String orgCode) {
//        Pager pager = null;
//        try {
//            pager = assignPermissionServiceImpl.listOrgByPage(orgCode, userDto);
//        } catch (Exception e) {
//            return new ReturnData(Consts.SUCCESS, "查询用户权限管理机构下的人员信息分页数据失败", "");
//        }
//        // 设置页面数据
//        Map<String, Object> returnObject = new HashMap<String, Object>();
//        returnObject.put("total", pager.getRowCount());
//        returnObject.put("rows", pager.getResults());
//        return new ReturnData(Consts.SUCCESS, "", returnObject);
//    }

    /**
     * @param userDto
     * @param orgCode
     * @return ReturnData 返回类型
     * @throws
     * @method [listWaitUserByOrg]
     * @description [查询等待分配的机构人员分页数据]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 17:06
     */
    @RequestMapping("/listWaitUserByOrg")
    @ResponseBody
    public ReturnData listWaitUserByOrg(UserDto userDto,
                                        @RequestParam(value = "orgCode", required = false) String orgCode) {
        Pager pager = null;
        try {
            pager = assignPermissionServiceImpl.listWaitUserByOrg(userDto, orgCode);
        } catch (Exception e) {
            return new ReturnData(Consts.ERROR, "查询等待分配的机构人员分页数据失败", "");
        }
        // 设置页面数据
        Map<String, Object> returnObject = new HashMap<String, Object>();
        returnObject.put("total", pager.getRowCount());
        returnObject.put("rows", pager.getResults());
        return new ReturnData(Consts.SUCCESS, "", returnObject);
    }

    /**
     * @param roleDto
     * @return void 返回类型
     * @throws
     * @method [listRoleByPage]
     * @description [查询机构用户分配角色分页数据]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 17:12
     */
    @RequestMapping("/listRoleByPage")
    @ResponseBody
    public ReturnData listRoleByPage(RoleDto roleDto) {
        Pager pager = null;
        try {
            pager = assignPermissionServiceImpl.listRoleByPage(roleDto);
        } catch (Exception e) {
            return new ReturnData(Consts.ERROR, "查询机构用户分配角色分页数据失败", "");
        }
        //设置页面数据
        Map<String, Object> returnObject = new HashMap<String, Object>();
        returnObject.put("total", pager.getRowCount());
        returnObject.put("rows", pager.getResults());
        return new ReturnData(Consts.SUCCESS, "", returnObject);
    }

    /**
     * @param ids     用户Id   多个用','分割
     * @param orgCode 机构编码
     * @return void 返回类型
     * @throws
     * @method [saveOrgByUser]
     * @description [添加机构人员]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 17:13
     */
    @RequestMapping("/saveOrgByUser")
    @ResponseBody
    public ReturnData saveOrgByUser(@RequestParam(value = "ids", required = false) String ids,
                                    @RequestParam(value = "orgCode", required = false) String orgCode) {
        try {
            this.assignPermissionServiceImpl.saveOrgByUser(ids, orgCode);
        } catch (Exception e) {
            return new ReturnData(Consts.ERROR, "保存失败", null);
        }
        return new ReturnData(Consts.SUCCESS, "保存成功", null);
    }

    /**
     * @param roleIds     角色Id  多个用','分割
     * @param orgCode 机构编码
     * @param userId
     * @return void 返回类型
     * @throws
     * @method [addRolePersonnel]
     * @description [添加机构人员角色]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 16:57
     */
    @RequestMapping("/saveRoleByOrgPersonal")
    @ResponseBody
    public ReturnData saveRoleByOrgPersonal(@RequestParam(value = "roleIds", required = false) String roleIds,
                                     @RequestParam(value = "orgCode", required = false) String orgCode,
                                     @RequestParam(value = "userId", required = false) String userId) {
        try {
            this.assignPermissionServiceImpl.saveRoleByOrgPersonal(roleIds, orgCode, userId);
        } catch (Exception e) {
            return new ReturnData(Consts.ERROR, "保存失败", null);
        }
        return new ReturnData(Consts.SUCCESS, "保存成功", null);
    }

    /**
     * @param userId  用户Id
     * @param orgCode 机构编码
     * @return void 返回类型
     * @throws
     * @method [deleteByUser]
     * @description [删除人员机构数据]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月08日 16:58
     */
    @RequestMapping("/deleteByUser")
    @ResponseBody
    public ReturnData deleteByUser(@RequestParam(value = "userId", required = false) String userId,
                            @RequestParam(value = "orgCode", required = false) String orgCode) {
        try {
            assignPermissionServiceImpl.deleteByUser(userId, orgCode);
        } catch (Exception e) {
            return new ReturnData(Consts.ERROR, "删除失败", null);
        }
        return new ReturnData(Consts.SUCCESS, "删除成功", null);
    }
}
